﻿using sipfe.model.dataAccess;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

//using sipfe.model.dataAccess;



namespace sipfe.model.mante
{
    public class MenuManteDAO
    {
        private BDSIPFEEntities db = new BDSIPFEEntities();

        /*REGISTRAR TABLAS*/

        public string agregarOpcionDAO(SIPMaeOpcion sipMaeOpcion)
        {
            db.SIPMaeOpcion.Add(sipMaeOpcion);
            db.SaveChanges();
            return sipMaeOpcion.nIdeOpcion.ToString() ;
        }

        /*LISTAR REGISTROS*/
        public List<SIPMaeOpcion> DetalleHijosDAO(decimal nIdeOpcion)
        {
            return db.SIPMaeOpcion.Where(x => x.nIdeOpcionPadre == nIdeOpcion).OrderBy(x => x.nOrden).ToList();
        }

        public SIPMaeOpcion ListarOpcionByIdDAO(decimal nIdeOpcion)
        {
            return db.SIPMaeOpcion.Find(nIdeOpcion); 
        }

        public int cerrarVigenciaDepDAO(decimal nIdeOpcion, DateTime ayer)
        {
            SIPMaeOpcion sipMaeOpcion = new SIPMaeOpcion();

            sipMaeOpcion = db.SIPMaeOpcion.Find(nIdeOpcion);
            sipMaeOpcion.dtFecFinVig = ayer;
            db.Entry(sipMaeOpcion).State = EntityState.Modified;

            //cerramos vigencia de los hijos, si es que existen
            var ListaHijos = db.SIPMaeOpcion.Where(s => s.nIdeOpcionPadre == nIdeOpcion).ToList();
            ListaHijos.ForEach(x => x.dtFecFinVig = ayer);
            db.SaveChanges();
            return (sipMaeOpcion.dtFecFinVig != null) ? 1 : 0;
        }

        public String[] AddHijoAlaOpcionDAO(SIPMaeOpcion sipMaeOpcion)
        {
            db.SIPMaeOpcion.Add(sipMaeOpcion);
            db.SaveChanges();
            return new String[] { sipMaeOpcion.nIdeOpcion.ToString(), sipMaeOpcion.vDescr };
        }

        public String[] UpdateOpcionDAO(SIPMaeOpcion sipMaeOpcion)
        {
            db.Entry(sipMaeOpcion).State = EntityState.Modified;
            db.SaveChanges();
            return new String[] { sipMaeOpcion.nIdeOpcion.ToString(), sipMaeOpcion.vDescr };
        }

        public int CerrarVigenciaPerfilOpcion(decimal nIdeOpcionPerfil, DateTime ayer)
        {
            SIPDetOpcionPerfil sipDetOpcionPerfil = new SIPDetOpcionPerfil();
            sipDetOpcionPerfil = db.SIPDetOpcionPerfil.Find(nIdeOpcionPerfil);
            sipDetOpcionPerfil.dtFecFinVig = ayer;
            db.Entry(sipDetOpcionPerfil).State = EntityState.Modified;            
            db.SaveChanges();
            return (sipDetOpcionPerfil.dtFecFinVig != null) ? 1 : 0;
        }

    }
}
